package com.hjj.jvm.oom;

import java.util.ArrayList;
import java.util.List;

/**
 * <h2>java堆内存溢出<h2/>
 *
 * <p>java堆用来存储对象实例，只要不断创建对象，并保证GC Roots到对象之间有可达路径
 * 来避免垃圾回收机制来清除这些对象，那么随着对象的增加，总容量触及最大堆的容量限制后会产生内存溢出异常</p>
 * <p>VM Args：-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError</p>
 * <p>1. 确认内存中导致OOM的对象是否是必要的</p>
 * <p>2. 确认出现内存泄漏（Memory Leak）还是内存溢出（Memory Overflow）</p>
 */
public class HeapOOM {
    static class OOMObject {

    }

    public static void main(String[] args) {
        List<OOMObject> list = new ArrayList<>();
        while (true) {
            list.add(new OOMObject());
        }
    }
}
